// 认证令牌管理器
// 专门处理cookie中令牌的读取、保存和删除功能

/**
 * 认证令牌管理器模块
 */
var AuthTokenManager = {
    /**
     * 从cookie中获取认证令牌
     * @returns {string|null} - 认证令牌，如果不存在则返回null
     */
    getAuthToken: function() {
        const nameEQ = 'auth_token=';
        const ca = document.cookie.split(';');
        for(let i = 0; i < ca.length; i++) {
            let c = ca[i];
            while (c.charAt(0) === ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) === 0) return decodeURIComponent(c.substring(nameEQ.length, c.length));
        }
        return null;
    },

    /**
     * 保存认证令牌到cookie
     * @param {string} token - 认证令牌
     * @param {number} days - 过期天数，默认为7天
     */
    saveAuthToken: function(token, days = 7) {
        let expires = '';
        if (days) {
            const date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = '; expires=' + date.toUTCString();
        }
        
        let cookieString = 'auth_token=' + encodeURIComponent(token) + expires + '; path=/';
        cookieString += '; samesite=lax';
        
        document.cookie = cookieString;
    },

    /**
     * 从cookie中删除认证令牌
     */
    removeAuthToken: function() {
        document.cookie = 'auth_token=; Max-Age=-99999999; path=/';
    },

    /**
     * 检查用户是否已登录（即是否存在有效的认证令牌）
     * @returns {boolean} - 如果存在认证令牌则返回true，否则返回false
     */
    isLoggedIn: function() {
        return this.getAuthToken() !== null;
    }
};

// 将AuthTokenManager挂载到全局window对象上，使其可以被其他脚本访问
window.AuthTokenManager = AuthTokenManager;